#pragma once

#include <string>
#include <windows.h>

namespace TLib
{
	class ICheat;
	
	// Interface for a trainer application manager class.
	class ITrainer
	{
	public:
		virtual int Run() = 0;
		virtual void addCheat(ICheat* cheat) = 0;
		virtual void removeCheat(unsigned int index) = 0;
		virtual ICheat* getCheat(unsigned int index) = 0;
		virtual unsigned int getNumberOfCheats() = 0;
		
		virtual HWND getGameHWnd() = 0;
		virtual HWND getTrainerHWnd() = 0;
		virtual HINSTANCE getTrainerHInstance() = 0;

		virtual unsigned int getTrainerHeight() const = 0;
		virtual unsigned int getTrainerWidth() const = 0;
		
		
		virtual const std::string& getGameTitle() const = 0;
		
		virtual void setTrainerTitle(const std::string& title) = 0;
		virtual const std::string& getTrainerTitle() const = 0;
		
		virtual void setAboutInfo(const std::string& aboutString) = 0;
		virtual const std::string& getAboutInfo() const = 0;
	};
}